1) 변수와 타입
Mathit에서 수학 그림을 그리려면 먼저 데이터와 값들을 다루는 기본적인 변수와 데이터 타입을 이해해야 합니다.
Mathit은 수학적 명확성을 위해 직관적인 타입 시스템을 제공합니다. 숫자에 붙는 단위부터 2D/3D 점, 벡터, 복합 경로까지 복잡한 좌표 계산 없이 깔끔하게 다룰 수 있습니다.
1. 변수 선언과 명명 규칙
Mathit에서는 등호(=)를 사용하여 값이나 도형 객체를 변수에 할당합니다.
r = 5
center = (0, 0)
P1 = (2, 3)
이렇게 말이지요.
1-1. 변수 이름은 어떻게 짓는가
Mathit은 대소문자 첫 글자에 따라 수학적 의미를 구분하는 관례를 표준으로 합니다. 이 표준을 어기면 안됩니다.
대문자로 시작하는 변수 (A, P1, Circ, Poly)는 점, 선, 다각형, 원 등 기하학적 객체를 나타낼 때 주로 사용합니다.
소문자로 시작하는 변수 (r, len, alpha, f(x))는 스칼라 숫자, 실수 값, 함수, 일반 파라미터를 나타낼 때 주로 사용합니다.
2. 주요한 데이터 타입을 알아 보자
2.1. 숫자 및 단위
64비트 실수입니다. 숫자 뒤에 단위를 직접 붙여서 작성할 수 있으며, Mathit 내부에서 자동으로 기본 단위(라디안, pt 등)로 변환해 처리합니다.
각도 단위는 deg (도), rad (라디안), pi (파이)를 제공합니다.
화면, 인쇄 단위는 pt, mm, px 를 제공합니다.
angle1 = 45deg // 45도 (내부적으로 라디안 변환)
angle2 = 0.5pi // 0.5 * pi 라디안 (90도)
margin = 10mm // 10밀리미터
stroke_width = 1.5pt // 1.5포인트
2.2. 점
수학 도형의 가장 기본이 되는 요소입니다. 직교좌표계 방식뿐만 아니라 극좌표계, 구면좌표계 방식도 지원합니다.
우선 2D 점입니다.
A = (0, 0) // 직교좌표 (x, y)
B = (3, 4)
P_polar = (r=5, theta=60deg) // 극좌표 (반지름 r, 각도 theta)
3D 점입니다.
P3d = (1, 2, 3) // 3D 직교좌표 (x, y, z)
2.3. 벡터
방향과 크기를 가지는 요소입니다. vec() 함수로 생성하거나, 두 점의 뺄셈을 통해 직관적으로 생성할 수 있습니다.
v1 = vec(3, 4) // (3, 4) 방향의 2D 벡터
v2 = vec3(1, 2, 3) // 3D 벡터
// 점 B에서 점 A를 빼면 A -> B로 가는 변위 벡터가 됩니다.
A = (1, 1)
B = (4, 5)
dir_vec = B - A // vec(3, 4)와 동일
2.4. 경로와 다각형
여러 점들을 이어 만든 선분, 베지어 곡선, 닫힌 다각형 객체입니다.
경로 연산자 (-)는 점과 점을 이을 때는 반드시 이중 대시(-)를 사용합니다.
베지어 곡선 (..controls..)은 곡선 경로를 생성할 때 사용합니다.
2.5. 특수 타입
미지수 리터럴 (?)은 좌표를 직접 알 수 없고 제약조건을 통해 풀어야 할 때 solve { ... } 블록 내부에서 사용합니다.
solve {
C = (?, ?) // C의 x, y 좌표는 미지수
dist(A, C) == 5
}
순서/방향 태그 (OrdinalTag)는 교점이 여러 개 나올 때 원하는 지점을 고르는 필터 리터럴입니다.
P = isect(Circle1, Circle2, #top) // 위쪽 교점 선택 (#1, #2, #top, #bottom 등)